package com.study;

/*
* 获取和使用成员方法
* */

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class Demo4 {
    public static void main(String[] args) {
        try {
            // 拿到类对象
            Class<?> studentClass = Class.forName("com.study.Student");
            // 创建实例（1.获取有参构造，2执行有参构造）
            Constructor<?> constructorWithParam = studentClass.getConstructor(String.class, Integer.class);
            Student stu1 = (Student) constructorWithParam.newInstance("小明", 18);
            Student stu2 = (Student) constructorWithParam.newInstance("小红", 20);

            // 调用方法。(1. 通过反射的方式获取方法，2.执行方法)
            Method eatMethod = studentClass.getMethod("eat");
            Method eatMethodWithParam = studentClass.getMethod("eat", String.class);

            eatMethod.invoke(stu1);
            eatMethodWithParam.invoke(stu2,"太好吃了！");


        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}
